#include "LinkedList.h"
#include <stdio.h>
#include <stdlib.h>

/* 定义一个单向链表的头部指针 */
struct LinkedListNode *head = NULL;
/**
  * @Function：单向链表节点增加函数
  * @brief: 单向链表节点增加函数
  * @param: data: 节点数据
  * @retval: int类型 0表示失败，1表示成功
***/
int add_node(int data)
{
    /* 1.申请一块存放节点的内存空间 */
    struct LinkedListNode *new_node_point = (struct LinkedListNode *)malloc(sizeof(struct LinkedListNode));

    /* 判断内存空间是否申请成功 */
    if (new_node_point == NULL)
    {
        printf("内存申请失败\n");
        return 0;
    }

    printf("内存申请成功\n");
    /* 2. 初始化单向链表的节点数据 */
    new_node_point->data = data;
    new_node_point->next = NULL;//不知道下一个节点的地址，初始化时设置为空

    /* 3.添加节点到链表中 */
    // 第一种情况，链表头部为空
    if (head == NULL)
    {
        printf("头节点为空，添加首个节点，数据data = %d\n", new_node_point->data);
        head = new_node_point;
        return 1;
    }

    // 第二种情况，链表头部不为空
    struct LinkedListNode *current = head;

    /* 循环遍历链表，直到链表尾部 */
    while (current->next != NULL)
    {
        current = current->next;
    }

    /* 将新节点添加到链表的尾部 */
    current->next = new_node_point;
    printf("成功添加节点，数据为：%d\n", new_node_point->data);
}

/*
@brief: 打印链表中的所有节点数据
@param: 无
@retval: 无
*/
void print_all_node()
{
}

int delete_node(int data)
{
}

int update_data(int oldData, int newData)
{
}